home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / totdem.arc / EXTDEM2.PAS < prev    next >
Pascal/Delphi Source File  |  1991-02-10  |  2KB  |  97 lines

  1. Unit ExtDem2;
  2.  
  3. {A demonstration of the value of VIRTUAL methods - refer to chapter 16}
  4.  
  5. INTERFACE
  6.  
  7. Uses DOS,CRT, totSTR;
  8.  
  9. TYPE
  10. PrintOBJ = object 
  11.    constructor Init;
  12.    procedure   PrintChar(Ch:char);         VIRTUAL;
  13.    procedure   PrintStr(Str:string);
  14.    procedure   PrintInt(Int:integer);
  15.    destructor  Done;                       VIRTUAL;
  16. end; {PrintOBJ}
  17.  
  18. NewPrintOBJ = object (PrintOBJ)
  19.    vPort: string[4];
  20.    constructor Init;
  21.    procedure   SetPort(Prt:string);
  22.    procedure   PrintChar(Ch:char);         VIRTUAL;
  23.    destructor  Done;                       VIRTUAL;
  24. end; {NewPrintOBJ}
  25.  
  26. IMPLEMENTATION
  27.  
  28. {\\\\\\\\\\\\\\\ PrintOBJ \\\\\\\\\\\\\\\\\\\\}
  29. constructor PrintOBJ.Init;
  30. {no data to initialize}
  31. begin 
  32. end; {PrintOBJ.Init}
  33.  
  34. procedure PrintOBJ.PrintChar(Ch:char);
  35. {}
  36. var
  37.   Lst: text;
  38. begin
  39.    Assign(Lst,'LPT1');
  40.    Rewrite(Lst);
  41.    Write(Lst,Ch);
  42.    Close(Lst);
  43. end; {PrintOBJ.PrintChar}
  44.  
  45. procedure PrintOBJ.PrintStr(Str:string);
  46. {}
  47. var I : integer;
  48. begin
  49.    for I := 1 to length(Str) do
  50.        PrintChar(Str[I]);
  51. end; {PrintOBJ.PrintStr}
  52.  
  53. procedure PrintOBJ.PrintInt(Int:integer);
  54. {}
  55. var I:integer; Str:string;
  56. begin
  57.    Str := IntToStr(Int);
  58.    for I := 1 to length(Str) do
  59.        PrintChar(Str[I]);
  60. end; {PrintOBJ.PrintInt}
  61.  
  62. destructor PrintOBJ.Done;
  63. {no data to dispose of}
  64. begin
  65. end; {PrintOBJ.Done}
  66. {\\\\\\\\\\\\\\\ PrintOBJ \\\\\\\\\\\\\\\\\\\\}
  67. constructor NewPrintOBJ.Init;
  68. {}
  69. begin 
  70.    PrintOBJ.Init;
  71.    vPort := 'LPT1';
  72. end; {NewPrintOBJ.Init}
  73.  
  74. procedure NewPrintOBJ.PrintChar(Ch:char);
  75. {}
  76. var
  77.   Lst: text;
  78. begin
  79.    Assign(Lst,vPort);
  80.    Rewrite(Lst);
  81.    Write(Lst,Ch);
  82.    Close(Lst);
  83. end; {NewPrintOBJ.PrintChar}
  84.  
  85. procedure NewPrintOBJ.SetPort(Prt:string);
  86. {}
  87. begin
  88.    vPort := Prt;
  89. end; {NewPrintOBJ.SetPort}
  90.  
  91. destructor NewPrintOBJ.Done;
  92. {}
  93. begin
  94.    PrintOBJ.Done
  95. end; {NewPrintOBJ.Done}                                               
  96.  
  97. end.